The present invention relates to the data-processing field. More specifically, this present invention relates to the deployment of software images.
Software images are a key feature of modern data-processing systems. Generally speaking, a software image is a structure that encapsulates files residing on a (physical or virtual) data-processing machine—for example, storing its operating system, application programs, and/or data. The software images are suitable to be moved, copied, replicated, protected and profiled in a very simple way. These advantages are clearly perceived when the software images are used in virtual machines (i.e., emulations by software of physical machines); indeed, in this case any kind of virtual machine may be provisioned on-demand by simply creating a new virtual machine and then booting it from a desired software image. For example, this is particularly useful in cloud computing (wherein multiple data-processing services are provided to client computers being completely agnostic of their physical implementation).
The software images are generally stored in a source data-processing system (for example, a source server), from which they are deployed onto multiple target data-processing entities (for example, target virtual machines hosted on a target server). The target server is generally remote from the source server; therefore, the deployment of the software images on its target virtual machines is a relatively long process.
In order to tackle this problem, it has also been proposed to use some target virtual machines for providing the software image (or at least a portion thereof) to other target virtual machines—for example, as described in US-A-2011/0231844, U.S. Pat. No. 7,788,713 and US-A-2011/0219372 (the entire disclosures of which are herein incorporated by reference). Moreover, it is also possible to cache the software image along a network path from the source server to the target servers for its access by other target servers—for example, as described in “Datacast: A Scalable and Efficient Group Data Delivery Service for Data Centers, Chuanxiong Guo et al. (Microsoft Ltd.), Microsoft Technology report (MSR-TR-2011-76)” (the entire disclosure of which is herein incorporated by reference).
In any case, each new target virtual machine is available only after the full software image has been deployed thereon (in general, after some hours).
Alternatively, instead of deploying the whole software image on each target virtual machine, it is possible to download only memory blocks thereof on-demand; the downloaded memory blocks may also be saved temporally into a local cache and possibly pre-fetched for their next use. Particularly, as described in “Optimizing Multi-Deployment On Clouds By Means Of Self-Adaptive Prefetching,” Nicolae, Bogdan et al; Cappello, Franck et al., Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), v 6852 LNCS, n PART 1, p 503-513, 2011, Euro-Par 2011 Parallel Processing—17th International Conference, Proceedings, Springer Verlag” (the entire disclosure of which is herein incorporated by reference), when multiple instances of the same software image are used concurrently on the same target server, their memory blocks may be pre-fetched by the slower target virtual machines following a previous access pattern of the faster target virtual machines (since their access patterns should be very similar).
However, in the above-described technique the memory blocks of the software image are downloaded onto each target virtual machine only for their immediate use. Therefore, these memory blocks disappear after they have been used, and in any case after the target virtual machine is turned off, so that they have to be downloaded again for any next use thereof (with the target server that can never be disconnected from the source server). Even when the memory blocks are stored into the local cache (possibly with their pre-fetching), only few of them remain in the local cache for their re-use (in any case, with the least recently used memory blocks in the local cache that are ultimately evicted for storing new memory blocks).